using System;
using System.Collections.Generic;
using System.Text;
using System.Data.OleDb;
using AMS.Profile;

namespace Montana.DAC
{
    public static class Conexion
    {
        private static OleDbConnection conexionActual = null;
        private static OleDbTransaction transaccion = null;

        public static OleDbConnection ConexionActual
        {
            get
            {
                if (conexionActual == null)
                {
                    //Xml xml = new Xml("DatosConexion.xml");
                    //string ruta = xml.GetValue("conexion", "rutaBase").ToString();
                    string stringConexion = System.Configuration.ConfigurationManager.AppSettings["ConnStringBD"];
                    //string stringConexion = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Archivos de programa\Sistema\montana.mdb;User Id=admin;Password=;";
                    conexionActual = new OleDbConnection(stringConexion);
                }

                return conexionActual;
            }
            set
            {
                conexionActual = value;
            }
        }

        public static OleDbTransaction TransaccionActual
        {
            get { return transaccion; }
        }

        public static void Conectar()
        {
            if (ConexionActual.State != System.Data.ConnectionState.Open)
                ConexionActual.Open();
        }

        public static void Desconectar()
        {
            if (TransaccionActual != null)
                return;

            if (ConexionActual.State != System.Data.ConnectionState.Closed)
                ConexionActual.Close();

            ConexionActual = null;
        }

        public static void IniciarTransaccion()
        {
            if (transaccion == null)
                transaccion = ConexionActual.BeginTransaction();
        }

        internal static void AbortarTransaccion()
        {
            if (transaccion != null)
            {
                transaccion.Rollback();
                transaccion = null;
            }
        }

        internal static void TerminarTransaccion()
        {
            if (transaccion != null)
            {
                transaccion.Commit();
                transaccion = null;
            }
        }
    }
}
